Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Matches strings against configurable strings, globs, regular expressions, and/or functions
The anymatch npm package is a utility that allows you to match strings against a variety of patterns including strings, regexes, and functions. It is commonly used to test whether a given string matches any of a set of criteria, which is useful for tasks like filtering file paths or determining if an event should trigger a particular action.
String pattern matching
Match a string against a single glob pattern.
"foo.js".match(anymatch('*.js'))
Array of patterns matching
Match a string against an array of glob patterns.
anymatch(['*.js', '*.css'], 'foo.js')
Function as a custom matcher
Use a function as a custom matcher in the array of patterns.
anymatch([/\.js$/, (string) => string.includes('foo')], 'foo.js')
Negated patterns
Use negated patterns to exclude matches.
anymatch(['*.js', '!foo.js'], 'foo.js')
Partial application
Create a partially applied matcher function for reuse.
const isJsFile = anymatch('*.js');
isJsFile('foo.js');
Micromatch is a glob matching library that offers a variety of powerful features and optimizations. It is more extensive than anymatch, providing more fine-grained control over pattern matching and glob expansion.
Minimatch is a minimal matching utility that implements glob matching in JavaScript. It is the matcher used by npm itself and is similar to anymatch but with a simpler API and fewer features.
Multimatch extends minimatch to allow multiple patterns to be specified. It is similar to anymatch in that it can match against multiple patterns, but it is built on top of minimatch.
Picomatch is a small, fast, and powerful glob matcher with a simple API. It is similar to anymatch but focuses on performance and is suitable for runtime usage.
Javascript module to match a string against a regular expression, glob, string, or function that takes the string as an argument and returns a truthy or falsy value. The matcher can also be an array of any or all of these. Useful for allowing a very flexible user-defined config to define things like file paths.
Note: This module has Bash-parity, please be aware that Windows-style backslashes are not supported as separators. See https://github.com/micromatch/micromatch#backslashes for more information.
npm install anymatch
testString
for non-function matchers, while the entire array will be applied
as the arguments for function matchers.const anymatch = require('anymatch');
const matchers = [ 'path/to/file.js', 'path/anyjs/**/*.js', /foo.js$/, string => string.includes('bar') && string.length > 10 ] ;
anymatch(matchers, 'path/to/file.js'); // true
anymatch(matchers, 'path/anyjs/baz.js'); // true
anymatch(matchers, 'path/to/foo.js'); // true
anymatch(matchers, 'path/to/bar.js'); // true
anymatch(matchers, 'bar.js'); // false
// returnIndex = true
anymatch(matchers, 'foo.js', {returnIndex: true}); // 2
anymatch(matchers, 'path/anyjs/foo.js', {returnIndex: true}); // 1
// any picomatc
// using globs to match directories and their children
anymatch('node_modules', 'node_modules'); // true
anymatch('node_modules', 'node_modules/somelib/index.js'); // false
anymatch('node_modules/**', 'node_modules/somelib/index.js'); // true
anymatch('node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // false
anymatch('**/node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // true
const matcher = anymatch(matchers);
['foo.js', 'bar.js'].filter(matcher); // [ 'foo.js' ]
anymatch master* ❯
You can also pass in only your matcher(s) to get a curried function that has
already been bound to the provided matching criteria. This can be used as an
Array#filter
callback.
var matcher = anymatch(matchers);
matcher('path/to/file.js'); // true
matcher('path/anyjs/baz.js', true); // 1
['foo.js', 'bar.js'].filter(matcher); // ['foo.js']
See release notes page on GitHub
startIndex
and endIndex
arguments. Node 8.x-only.FAQs
Matches strings against configurable strings, globs, regular expressions, and/or functions
The npm package anymatch receives a total of 40,329,294 weekly downloads. As such, anymatch popularity was classified as popular.
We found that anymatch demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.